import {
  Controller,
  Get,
  Post,
  Body,
  Param,
  Query,
  Delete,
  ParseIntPipe,
  Res,
} from '@nestjs/common';
import { ArticleTagService } from './article-tag.service';

@Controller()
export class ArticleTagController {
  constructor(private readonly articleTagService: ArticleTagService) {}

  /**
   * 文章添加标签
   *
   * @body {object[]} CreateArticleTagDto - 文章标签信息
   * @returns {object} - 返回创建成功
   */
  // @Post()
  // async create(@Body() articleTagList: CreateArticleTagDto[], @Res() res) {
  //   await this.articleTagService.create(articleTagList);
  //   res.send({
  //     code: 0,
  //     msg: '创建成功',
  //   });
  // }

  /**
   * 根据 article_id 获取标签信息列表
   *
   * @query {number} article_id - 文章ID
   * @returns {number[] | []} - 返回文章对应标签信息
   */

  @Get(':article_id')
  async findAll(@Param('article_id', ParseIntPipe) article_id: number) {
    const [list, total] = await this.articleTagService.findAll(article_id);
    return {
      list,
      total,
    };
  }

  /**
   * 根据 article_tag_id 删除标签
   *
   * @param {number} article_tag_id - 文章标签信息ID
   * @returns {object} - 返回 code 和 msg
   */
  @Delete(':article_tag_id')
  async deleteOneTag(
    @Param('article_tag_id') article_tag_id: string,
    @Res() res,
  ) {
    await this.articleTagService.deleteOneTag(+article_tag_id);
    res.send({
      code: 0,
      msg: '删除成功',
    });
  }

  /**
   * 根据 article_id 和 tag_id 查询标签是否存在
   *
   * @query {number} article_id - 文章ID
   * @query {number} tag_id - 标签ID
   * @returns {object | null} - 返回查询道的文章对应标签信息
   */
  @Get()
  query(
    @Query('article_id', ParseIntPipe) article_id: number,
    @Query('tag_id', ParseIntPipe) tag_id: number,
  ) {
    return this.articleTagService.findOne(article_id, tag_id);
  }
}
